home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Fixation 1.3 / util.c < prev    next >
Text File  |  1996-02-02  |  3KB  |  118 lines

  1. // util.c
  2.  
  3. #include <string.h>
  4. #include <stdarg.h>
  5. #include <stdio.h>
  6.  
  7. #include "mytypes.h"
  8. #include "main.h"
  9. #include "window.h"
  10. #include "ResRefs.h"
  11. #include "util.h"
  12. #include "error.h"
  13. #include "preffile.h"
  14. #include "incoming.h"
  15. #include "globals.h"
  16.  
  17. uchar gScratch[kGScratchSize];
  18. char *buffer;
  19.  
  20.     // pop up a simple alert with given string as the text, one okay button
  21. void stdmessage(Str255 s)
  22. {
  23.     ParamText(s, "\p", "\p", "\p");
  24.     (void) Alert(rmessagealrt, nil);
  25. }
  26.  
  27. void tprintf( char * format, ... )
  28. {
  29.     va_list params;
  30.     short len;
  31.     static Boolean lastPrompt = false;
  32.  
  33.     va_start(params,format);
  34.     len = vsprintf( buffer, format, params );
  35.     verify(len <= kGScratchSize);
  36.  
  37.     if (gPrefs.smartText) {
  38.             // you may wish to close your eyes
  39.             // the ugliness of the following code may shock you
  40.         Boolean same = !strcmp(buffer, gPrompt);
  41.         short length = strlen(gPrompt);
  42.         gPrompt[length] = '\r'; gPrompt[length+1] = 0;
  43.         same |= !strcmp(buffer, gPrompt);
  44.         gPrompt[length] = 0;
  45.         if (buffer[0] == '\r')
  46.             same |= !strcmp(&buffer[1], gPrompt);
  47.         if (same) {
  48.             if (lastPrompt) {
  49.                 va_end(params);
  50.                 return;        // we don't need to hear this again, really
  51.             }
  52.             lastPrompt = true;
  53.         }
  54.         else if (len > 1 || buffer[0] != '\r')
  55.             lastPrompt = false;
  56.             
  57.         if (len == 1 && buffer[0] == '\r' && lastPrompt) {
  58.                 // this is all getting a little dodgy . . .
  59.             va_end(params);
  60.             return;        // we don't need to hear this again, really
  61.         }
  62.     }
  63.  
  64. //    if ((**myText).selStart < (**myText).teLength)    
  65. //        TESetSelect(32767, 32767, myText);
  66.  
  67.     short leng = (**myText).teLength;
  68.     short oldstart = (**myText).selStart, oldend = (**myText).selEnd;
  69.     (**myText).selStart = leng; (**myText).selEnd = leng;
  70.  
  71.     TEInsert(buffer, len, myText);
  72.  
  73.     (**myText).selStart = oldstart; (**myText).selEnd = oldend;
  74.     leng = (**myText).teLength;
  75.     
  76.         // check if we need to clear some space
  77.     if (leng > 25000) {
  78.             // delete 5K
  79.         short cuts = 5000;
  80.     //    TESetSelect(0, cuts, myText);
  81.         (**myText).selStart = 0; (**myText).selEnd = cuts;
  82.         TEDelete(myText);
  83.     //    TESetSelect(32767, 32767, myText);
  84.         oldstart -= cuts; oldend -= cuts;
  85.         if (oldstart < 0)
  86.             oldstart = 0;
  87.         if (oldend < 0)
  88.             oldend = 0;
  89.         (**myText).selStart = oldstart; (**myText).selEnd = oldend;
  90.             
  91.             // maybe this will stop anal leakage
  92.             // I mean color leakage, whoops
  93.         TEStyleHandle tsh = GetStylHandle(myText);
  94.         (**(**(**tsh).nullStyle).nullScrap).scrpStyleTab[0].scrpFace = 0;
  95.         (**(**(**tsh).nullStyle).nullScrap).scrpStyleTab[0].scrpColor.red = 0;
  96.         (**(**(**tsh).nullStyle).nullScrap).scrpStyleTab[0].scrpColor.green = 0;
  97.         (**(**(**tsh).nullStyle).nullScrap).scrpStyleTab[0].scrpColor.blue = 0;
  98.     }
  99.     
  100.     if (!gInTheThick || gPrefs.slowText)
  101.         CalcVBar();
  102.     
  103.     va_end(params);
  104. }
  105.  
  106. void
  107. PrintAddress(unsigned long addr)
  108. {
  109.     tprintf("%d.%d.%d.%d", (short) (addr >> 24), (short) ((addr<<8) >> 24),
  110.             (short) ((addr<<16)>>24), (short) ((addr<<24) >> 24));
  111. }
  112.  
  113. void
  114. MyInitUtil(void)
  115. {
  116.     buffer = (char *) NewPtr(kGScratchSize);
  117. }
  118.